<?php
session_start();
require_once ('Controller/LoginController.php');
require_once ('View/LoginView.php');
require_once ('Model/LoginHandler.php');
require_once ('Model/Database.php');
require_once ('Model/DBconfig.php');
require_once ('View/RegisterView.php');
require_once ('Controller/RegisterController.php');
require_once ('Model/RegisterHandler.php');
require_once ('View/NavigationView.php');
require_once ('Validering.php');
require_once ('View/PageView.php');
require_once ('Model/FileUploadHandler.php');
require_once ('View/FileUploadView.php');
require_once ('Controller/FileUploadController.php');
require_once ('View/CommentView.php');
require_once ('Model/CommentHandler.php');
require_once ('Model/Comment.php');
require_once ('Model/Picture.php');
require_once ('Controller/CommentController.php');

class MasterController {

	// doControll kollar navigation, om man vill registrera eller logga in
	// och visar beroende på vad url:en visar.
	public static function doControll() {

		// Titel
		$title = "Start - PHP";
		$registerTitle = "Registrera";
		// Vad html ska innehålla
		$html = null;
		// Databas
		$db = new Database();
		// Connectar
		$db -> Connect(new DBconfig());

		// Skapar referens till LoginHandler, FileUploadHandler och LoginController
		$fHandler = new FileUploadHandler($db);
		$lHandler = new LoginHandler($db);
		$lController = new LoginController();
		$lDoControll = $lController -> DoControll($db);

		// Hur alla sidor ska se ut och hanteras
		$pageView = new PageView();
		$navView = new NavigationView();

		// Om det är navPicture, alltså tryckt på en bild
		if ($navView -> navPicture()) {

			// hämtar filnamnet
			$fileName = FileUploadView::getFileName();

			// Skapar referens till kommentarer och doControll på det
			$commentControll = new CommentController();
			$cDoControll = $commentControll -> doControll($lHandler, $db);

			// Hämtar FileUploadHandler och View

			// Hämtar bild
			$picture = $fHandler -> GetPicture($fileName);

			// Kollar om namnet finns
			if ($fHandler -> DoExists($fileName)) {

				// Hämtar namnet på uppladdaren, och titel
				$uploadName = $picture -> getName();
				$picTitle = $picture -> getTitle();
				// Skapar en bild med hjälp av titel, namnet på uppladdaren och bildnamnet
				$onePic = FileUploadView::onePic($picTitle, $uploadName, $fileName);
				$html = $pageView -> getHTML($picTitle, $lDoControll, $onePic, $cDoControll);

			} else {
				// Gör att titel blir att bilden inte finns
				$title = "404 - Page Not Found";
				// Gör så onePic ser ut som en bild som står "404 Image not found"
				$onePic = FileUploadView::NoPicture();
				// Sätter de i html
				$html = $pageView -> getHTML($title, $lDoControll, $onePic, null);
			}

			// Annars om det länkar till att man ska registrera
		} else if ($navView -> navRegister()) {
			// Hämtar controllern för registrering
			$rController = new RegisterController();
			$rDoControll = $rController -> DoControll($db);
			// sätter de i html
			$html = $pageView -> GetHTML($registerTitle, $lDoControll, $rDoControll, null);
		} else {
			// Annars så ska alla bilder visas "startsidan"
			$fController = new FileUploadController();
			$fDoControll = $fController -> DoControll($lHandler, $db);
			// och sätter de i html
			$html = $pageView -> GetHTML($title, $lDoControll, $fDoControll, null);
		}
		// Retunerar html
		return $html;
		$db -> Close();

	}

}

// Ropar på Mastercontrollern
echo MasterController::doControll();
